菜单

概述

System菜单

select a.node_id, m.name, m.IsSummary, m.ad_window_id,p.ad_process_id,f.ad_form_id,k.ad_workflow_id,i.ad_infowindow_id,s.ad_task_id from ad_treenodemm a 
join ad_menu m on a.node_id=m.ad_menu_id and m.isactive='Y'
left join ad_window w on w.ad_window_id=m.ad_window_id and w.isactive='Y'
left join ad_process p on p.ad_process_id=m.ad_process_id and p.isactive='Y'
left join ad_form f on f.ad_form_id=m.ad_form_id and f.isactive='Y'
left join ad_workflow k on k.ad_workflow_id=m.ad_workflow_id and k.isactive='Y'
left join ad_infowindow i on i.ad_infowindow_id=m.ad_infowindow_id and i.isactive='Y'
left join ad_task s on s.ad_task_id=m.ad_task_id and s.isactive='Y'
where a.ad_tree_id = 10
order by 4,5,6,7,8,9
查询结果:660条 ( 有效菜单 )

全部节点=676条(包含16条无效菜单记录),而全部菜单=819条,有效菜单=663条(有3条手工维护掉了)

新建菜单

全部节点
/* 注:系统默认memu有669个节点 ,所有菜单记录=812个 */
/* 系统默认menu的ad_tree_id=10,新menu的ad_tree_id =1000047 ( 依自己环境修改)*/

/* 第一步:先用全部节点检验生成所有树节点 */
/* 第二步:删除新menu中不要的节点(仿照默认菜单) */
delete from ad_treenodemm a 
where a.ad_tree_id = 1000047 
and a.node_id not in (select node_id from ad_treenodemm where ad_tree_id=10)
/* 第三步:更新主menu的层级关系到新菜单 */
update  ad_treenodemm a 
set parent_id=nod.parent_id, seqno=nod.seqno
from ad_treenodemm nod
where nod.node_id=a.node_id and nod.ad_tree_id='10' and ad_treenodemm.ad_tree_id='1000047'
/* 注:系统默认memu有669个节点 ,所有菜单记录=812个 */
/* 系统默认menu的ad_tree_id=10,新menu的ad_tree_id =1000047 ( 依自己环境修改)*/

/* 步骤1:新建树,已手工完成,记下树的id */
/* 步骤2:将默认menu的ad_tree_id=10的节点都复制(插入新menu的ad_tree_id =1000047)到ad_treenodemm表 */

insert into ad_treenodemm 
  select 
    1000047,                          /* ad_tree_id,需要修改成新树 */
    node_id ,
    1000007,                          /* ad_client_id,需要修改成当前实体 */
    0 ,                                     /* ad_org_id */
    'Y',                                    /* isactive */
    current_timestamp(0)::timestamp without time zone,0,   /* 创建时间,人 */
    current_timestamp(0)::timestamp without time zone,0,   /* 更新时间,人 */
    parent_id ,
    seqno ,
    generate_uuid ()
  from ad_treenodemm a 
    join ad_menu m on a.node_id=m.ad_menu_id and m.isactive='Y'
    where a.ad_tree_id = 10

分配菜单

新菜单节点

// 还没有找到办法,怎么脚本去掉

    //  Done with loading - add remainder from buffer
    if (m_buffer.size() != 0)
    {
      if (log.isLoggable(Level.FINEST)) log.finest("clearing buffer - Adding to: " + m_root);
      for (int i = 0; i < m_buffer.size(); i++)
      {
        MTreeNode node = (MTreeNode)m_buffer.get(i);
        MTreeNode parent = m_root.findNode(node.getParent_ID());
        if (parent != null && parent.getAllowsChildren())
        {
          parent.add(node);
          int sizeBeforeCheckBuffer = m_buffer.size();
          checkBuffer(node);
          if (sizeBeforeCheckBuffer == m_buffer.size())
            m_buffer.remove(i);
          i = -1;    //  start again with i=0
        }
      }
    }

    //  Nodes w/o parent
    if (m_buffer.size() != 0)
    {
      log.severe ("Nodes w/o parent - adding to root - " + m_buffer);
      for (int i = 0; i < m_buffer.size(); i++)
      {
        MTreeNode node = (MTreeNode)m_buffer.get(i);
        m_root.add(node);
        int sizeBeforeCheckBuffer = m_buffer.size();
        checkBuffer(node);
        if (sizeBeforeCheckBuffer == m_buffer.size())
          m_buffer.remove(i);
        i = -1;
      }
      if (m_buffer.size() != 0)
        log.severe ("Still nodes in Buffer - " + m_buffer);
    }  //  nodes w/o parents

导出菜单